1. Field of the Invention
This invention relates to subsystems communications and more particularly to a subsystem communication control system.
2. Discussion of the Prior Art
Many computers and other electronic systems handle complex processes by dividing a given process into subprocesses and using different elements of the system ("subsystems") simultaneously to execute respective subprocesses. To coordinate this type of distributed processing, the subsystems are typically interconnected by a communications "bus" or busses, and are provided with interface circuits for enabling communications of commands and data. Thus, in a distributed processing system, one subsystem performs its task and communicates the result to another subsystem, and so on, until the entire process has been completed.
Subsystem interconnections may have any of several configurations ("topologies") including one or more serial and/or parallel busses and multiple bus subdivisions ("sub-busses"). Address and data bus-lines can be separate ("non-multiplexed") or shared ("multiplexed"). The term "bus"herein refers to a linear bus topology, which is a parallel, multiplexed or non-multiplexed bus of continuous lines which are designated for certain kinds of connections to subsystems. An example of such a bus is the typical personal computer ("PC") configuration illustrated by FIG. 1. PC bus 101 interconnects processor 120, memory 130, host video I/O controller 140, host audio I/O controller 150, user-I/O controller 160 (for connecting user interface control devices such as a keyboard and/or mouse) and system expansion interface 170. A secondary bus 143 connects video I/O controller 140 to monitor 145, and another secondary bus 103 connects system expansion interface 170 to other subsystems (not shown).
Overall communication-flow ("bus traffic") is typically controlled by designated bus-master subsystems capable of initiating communications to each other and to slave subsystems capable only of responding to communications.
Conventional master subsystems control communications among subsystems on a communication-by-communication basis. A bus having only one communications pathway allows only one communication at a time and therefore, before attempting to communicate over a one-path bus, a master must wait until the bus is not being used. Then, since at any time more than one master might attempt a communication, the requesting master must acquire exclusive control of the bus. When the bus becomes available, the master typically begins arbitration by communicating a message over the bus requesting control of the bus. If no other master is communicating a similar request, then the requesting master may initiate communication. Conflicting contemporaneous requests can be resolved using typically a combination of predetermined prioritization and first-come-first-served criteria to allocate the bus to a prevailing master. Thus, arbitration times are often unpredictable and, with many contemporaneously requesting masters, can be long.
A master, having acquired control of a bus, typically initiates a transfer by issuing a command which includes the address of a slave that is to send or receive data. If the slave is available, then it begins sending or receiving. Otherwise, the master generally waits for the slave to become available. Alternatively, if another capable slave exists, the master may attempt to utilize it. Typically, however, the master must yield control of the bus and then request control anew. If meanwhile other masters have begun requesting control of the bus, then all the masters must conduct an arbitration. Once communication is initiated with a slave, there are few limitations on the length of time utilized for the communication, and meanwhile any other subsystems requesting communications must wait. Communication itself is typically conducted by a master by addressing a slave and transferring data on a word-by-word basis in order to clearly identify the intended data recipient.
Conventional subsystem-directed communications, as described thus far, are well matched to the needs of conventional personal computers ("PCs") and other less complex systems. The Personal Computer Interface ("PCI") bus of a conventional PC, for example, supports essentially predictable communication. Typically, since each of the three or four subsystems supported performs a unique function in an essentially repetitious manner, a subsystem sends data resulting from a given type of processing to the same next-subsystem. For example, a PC-based sound-processing subsystem repeatedly sends processed sound-data to the same audio-controller for output. Thus, subsystem communication control by masters according to predetermined and fixed priorities is sufficient. PCs also do not typically require or provide for the highly robust responses of real-time systems. Thus, the potentially substantial delays associated with waiting for an available bus, seeking control of the bus, arbitration and waiting for an uninterruptable slave have been acceptable, as have delays associated with word-based transfer controls typically directed by the master.
Unfortunately, delays inherent to master-slave systems may be unacceptable in systems requiring more robust responses, such as real-time systems. To make matters worse, communication patterns are far less predictable in more complex systems, and designation of masters and predetermined priority-criteria become less effective in coordination of subsystems as the number and complexity of the subsystems increase. As the number of subsystems increases, the possibility that an equal or higher-priority master might monopolize a bus increases and the possibility of time-consuming arbitration also increases. Other delays inherent to master-slave systems are also likely to be magnified as system complexity increases. Additionally, master subsystems are typically highly complex and use expensive components.
Thus, there is a need for a dynamic, robust, flexible and well-coordinated means for directing subsystem communications.